package io.adrainty.algorithm.mars;

/**
 * 构造特定数组的逆序拼接
 * @link <a href="https://www.marscode.cn/practice/364l85wv6oo6lq?problem_id=7424436653623246892">...</a>
 * @author adrainty
 * @version v1.0.0
 * @since 2024/11/25 上午9:10
 */
public class Solution013 {

    private Solution013() {}

    public static int[] solution(int n) {
        // write code here
        // 对于每个i从1到n，将数字n到i逆序拼接，直到i等于n为止。最终，输出这个拼接后的数组。
        // n = 5
        //
        // 输出：[5, 4, 3, 2, 1, 5, 4, 3, 2, 5, 4, 3, 5, 4, 5]
        int m = n * (n + 1) / 2;
        int[] ans = new int[m];       // 等差数列公式
        int i = 0;
        int count = n;
        while (i < m) {
            int t = n;
            for (int j = 0; j < count; j++) {
                ans[i++] = t--;
            }
            count--;
        }
        return ans;
    }

}
